{
  "cells": [
    {
      "cell_type": "code",
      "execution_count": 9,
      "metadata": {
        "collapsed": true,
        "pycharm": {
          "is_executing": false
        }
      },
      "outputs": [],
      "source": "import numpy as np\nimport seaborn as sns\nimport matplotlib.pyplot as plt\n%matplotlib inline\nsns.set(rc\u003d{\"figure.figsize\":(6,6)})\n"
    },
    {
      "cell_type": "markdown",
      "source": "### 调色板, 美化绘图\n* 颜色分为: 离散, 连续\n* color_palette() 能传入任何matplotlib支持的颜色\n* color_palette() 不写参数 则默认颜色\n* set_palette() 设置所有图颜色\n",
      "metadata": {
        "pycharm": {
          "metadata": false,
          "name": "#%% md\n"
        }
      }
    },
    {
      "cell_type": "markdown",
      "source": "### 分类调色板\n* 六个默认的颜色主题 deep muted pastel bright dark colorblind 默认深色调",
      "metadata": {
        "pycharm": {
          "metadata": false,
          "name": "#%% md\n"
        }
      }
    },
    {
      "cell_type": "code",
      "execution_count": 3,
      "outputs": [
        {
          "data": {
            "text/plain": "\u003cFigure size 432x72 with 1 Axes\u003e",
            "image/png": "iVBORw0KGgoAAAANSUhEUgAAAV0AAABECAYAAAAiJuZQAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvhp/UCwAAAXlJREFUeJzt2iFKRFEAhtE3rsUV6B4MwjBB0GoxmAfrBKtMNrgCbSIYBKNRF6TIcwVqet8Lc0695U8fl8tdjOM4DgAk9uYeALBLRBcgJLoAIdEFCIkuQOjP6H5+fVc7AHbC4r8vY8v1Y7Ul97RdDaf3l3PPmMzD2e3wtjqZe8YkXvfPh812OVyvn+aeMonNdjm8v1zNPWMyh0c3w8Xzx9wzJnN3fPDrmecFgJDoAoREFyAkugAh0QUIiS5ASHQBQqILEBJdgJDoAoREFyAkugAh0QUIiS5ASHQBQqILEBJdgJDoAoREFyAkugAh0QUIiS5ASHQBQqILEBJdgJDoAoREFyAkugAh0QUIiS5ASHQBQqILEBJdgJDoAoREFyAkugAh0QUIiS5ASHQBQqILEBJdgJDoAoREFyAkugAh0QUIiS5ASHQBQqILEBJdgJDoAoREFyAkugAh0QUILcZxHOceAbAr3HQBQqILEBJdgJDoAoREFyAkugChH0lkImw48q9zAAAAAElFTkSuQmCC\n"
          },
          "metadata": {},
          "output_type": "display_data"
        }
      ],
      "source": "current_palette \u003d sns.color_palette() # 默认颜色 默认深色调\nsns.palplot(current_palette)  #查看默认的调色板颜色\n",
      "metadata": {
        "pycharm": {
          "metadata": false,
          "name": "#%%\n",
          "is_executing": false
        }
      }
    },
    {
      "cell_type": "markdown",
      "source": "### 图形画板\n* 当有六个以上的数据区域要进行表达的时候默认的颜色不够用\n* 简单的方法就是在一个圆形的颜色空间中画出均匀的间隔颜色(色调会保持均匀的亮度以及饱和度)\n* 常用的方法就是使用 hls 颜色空间 RGB值的简单转换",
      "metadata": {
        "pycharm": {
          "metadata": false,
          "name": "#%% md\n"
        }
      }
    },
    {
      "cell_type": "code",
      "execution_count": 8,
      "outputs": [
        {
          "data": {
            "text/plain": "\u003cFigure size 1440x72 with 1 Axes\u003e",
            "image/png": "iVBORw0KGgoAAAANSUhEUgAABGoAAABECAYAAADZXtNTAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvhp/UCwAAAstJREFUeJzt3TGKFUEUheH7XEuBMpi7AcENCBXJMKkMpqKxKKYipjJMVCAYC+ZiLqLQOxmwDV6sRv36UH5f2sk96U83fVjXdS0AAAAAdndr7wMAAAAAOBJqAAAAAEIINQAAAAAhhBoAAACAEEINAAAAQIi/hppfNzenugMAAADgv3f41++5l/N+qltOrl2NWl5NvO/ZqOXjpPtuV7WzUcv3Ofe1s1Gfljm3VVU9aKPeTLzvSRv1eOJ979qovlzufcZG7tRol9WXt3sfsonjts97n7GZ0e5X/7bsfcZmxt1W/cPE+x626i8m3fezaly36o/m3DeuWz3vc26rqno5Wl1NvO98tPo68b57o9XSv+x9xkZ+VBsXtfT3ex+yieO2p3ufsZk2Xv/xmU+fAAAAAEIINQAAAAAhhBoAAACAEEINAAAAQAihBgAAACCEUAMAAAAQQqgBAAAACCHUAAAAAIQQagAAAABCCDUAAAAAIYQaAAAAgBBCDQAAAEAIoQYAAAAghFADAAAAEEKoAQAAAAgh1AAAAACEEGoAAAAAQgg1AAAAACGEGgAAAIAQQg0AAABACKEGAAAAIIRQAwAAABBCqAEAAAAIIdQAAAAAhBBqAAAAAEIINQAAAAAhhBoAAACAEEINAAAAQAihBgAAACCEUAMAAAAQQqgBAAAACCHUAAAAAIQQagAAAABCCDUAAAAAIYQaAAAAgBBCDQAAAEAIoQYAAAAghFADAAAAEEKoAQAAAAgh1AAAAACEEGoAAAAAQgg1AAAAACGEGgAAAIAQQg0AAABACKEGAAAAIIRQAwAAABBCqAEAAAAIIdQAAAAAhBBqAAAAAEIINQAAAAAhhBoAAACAEEINAAAAQAihBgAAACDEYV3Xde8jAAAAAPBGDQAAAEAMoQYAAAAghFADAAAAEEKoAQAAAAgh1AAAAACEEGoAAAAAQvwGg+BNbppFEdMAAAAASUVORK5CYII\u003d\n"
          },
          "metadata": {},
          "output_type": "display_data"
        }
      ],
      "source": "sns.palplot(sns.color_palette(\"hls\", 20))  # 指定划分颜色空间 指定分割颜色数量和展示的数据的种类相关\n",
      "metadata": {
        "pycharm": {
          "metadata": false,
          "name": "#%%%\n",
          "is_executing": false
        }
      }
    },
    {
      "cell_type": "markdown",
      "source": "### 调色板的使用\n* 将颜色和对应的数据展示绑定\n",
      "metadata": {
        "pycharm": {
          "metadata": false,
          "name": "#%% md\n"
        }
      }
    },
    {
      "cell_type": "code",
      "execution_count": 16,
      "outputs": [
        {
          "name": "stdout",
          "text": [
            "[[-0.99921688 -0.79528103 -1.48654804 -1.80958672 -0.89768042 -1.41342262\n   2.54371041 -0.78756012]\n [ 1.28428763  0.54067654  0.35437364 -0.52043988  0.29702852 -0.24125561\n   2.4948279  -0.84405273]\n [ 0.0945388   0.48337089 -1.4855407   0.23993344 -0.16532412 -1.40091336\n  -0.19858492  0.24432698]\n [-0.72118177 -0.83555982  0.84716918 -1.24185806 -1.68297189  0.0742151\n  -0.81897529 -0.43025968]\n [ 0.33154487 -0.70897606  0.75354896 -2.3901127   0.79647765 -0.2509361\n   1.17670092 -0.12889427]\n [ 1.03390284 -0.62117287  1.71923379  1.18140194  0.6250688   0.15658604\n  -1.34864705 -0.78518088]\n [-0.48196378  0.36575849 -0.3544733  -0.62120431  1.11725445  0.15403814\n   0.71795541  0.80918302]\n [-1.91901593  0.09871357 -0.38975221  1.64608661 -1.12253349 -1.22499798\n   1.73867114 -0.9540358 ]\n [ 1.68235355 -0.26526948 -0.5979009   0.77757285 -1.10913182 -0.49603173\n   0.8415422   0.49905472]\n [-1.02974401  1.19445421 -0.32994208  0.67715815  0.98975857  0.95126448\n   0.56029085 -0.78610589]\n [-0.36590272 -0.20994559  0.77524082  0.05791024  1.11571611 -0.76476338\n  -0.41989089 -1.17027474]\n [ 0.80780602 -1.07001347  0.04451693 -0.02109056  0.32987831  0.07191284\n  -1.91423249  0.08754224]\n [ 1.76113896  0.97138003  0.37811955  0.72509113  0.94218456  1.2477886\n  -0.44640625  1.20599659]\n [-1.02186812  0.03253023 -0.81054743 -0.64309668  1.05664475 -2.46261706\n  -1.10888384  0.80280408]\n [-0.31898054  0.91648755 -0.36193281 -0.2433796  -1.58005842 -1.05204638\n  -1.87838613 -0.47808365]\n [-0.26849708  1.00946209 -0.4537538  -0.82551687  1.29475918 -0.45554133\n   0.51250798  0.83252843]\n [ 0.05382062  1.19851959  0.77493679 -1.05258008 -0.77119374 -0.69099861\n  -0.39105848  1.81526287]\n [ 0.01594741 -0.09376722 -0.01003471  0.55991131 -0.53246999 -1.84065105\n  -1.13684848  2.53588342]\n [-0.67723201 -1.5315078  -0.70969552 -0.79356525 -1.20611562  0.90070977\n  -0.06515967  0.31830842]\n [ 1.31147125 -0.94380681  0.60977851  0.7802722  -0.55504095  0.73229595\n   0.96957005  0.67849895]]\n(20, 8)\n2\n[0.  0.5 1.  1.5 2.  2.5 3.  3.5]\n"
          ],
          "output_type": "stream"
        },
        {
          "data": {
            "text/plain": "\u003cmatplotlib.axes._subplots.AxesSubplot at 0x162fd7124e0\u003e"
          },
          "metadata": {},
          "output_type": "execute_result",
          "execution_count": 16
        },
        {
          "data": {
            "text/plain": "\u003cFigure size 432x432 with 1 Axes\u003e",
            "image/png": "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ouvt3btX//znP5XJZPTwww+rvb3d75Ku09vbe20P35GRER0/flxHjhzRd77znZL2ay6833zzTaXTaR04cEDHjh3T9u3bJ72XuF/27dunvr4+1dfX+11KTn19fYrFYnr66acVj8e1dOnSigzvt956S5L00ksv6ejRo+ru7q7I//dMJqPNmzerrq7O71LyGhkZkaSKHVRI0tGjR/XBBx/o73//uy5duqSenh6/S5pQW1ub2traJEl//OMf9Ytf/KLkwS0ZnDZ57733tHjxYknSbbfdpg8//NDninKbM2eOdu7c6XcZeT3wwAN64oknrn0dDFbmPqNLlixRV1eXJOns2bO68cYbfa5oYjt27NDy5ct10003+V1KXh999JEuXbqkjo4OrVy5UseOHfO7pOu88847WrBggVavXq3f/va3uueee/wuKa///ve/GhgY0K9+9auy9Gdu5J1MJhWNRq99HQwGNTo6qlCo8p5KS0uLTp8+7XcZec2cOVPS+L/r448/rieffNLninILhUJav369Dh8+rGeffdbvcq7T29urG264QYsXL9Zzzz3ndzl51dXV6Te/+Y3a29v12Wef6bHHHtPBgwcr6u8oHo/r7Nmz2rNnj06fPq1Vq1bp4MGDCgQCfpc2ob1792r16tVl68/cyDsajerixYvXvh4bG6uoXziLPv/8c61cuVI///nP9eCDD/pdTl47duzQoUOHtGnTJqVSKb/L+YZXX31V//73v7VixQodP35c69ev1+DgoN9lTWjevHlqbW1VIBDQvHnzFIvFKq7WWCymH//4xwqHw/re976nGTNm6Msvv/S7rAlduHBBn376qe66666y9WkuvJubm/X2229Lko4dO6YFCxb4XJFt58+fV0dHh9atW6dly5b5XU5Or7/+uvbu3StJqq+vVyAQqLgpnhdffFEvvPCC9u/fr4ULF2rHjh1qamryu6wJvfLKK9q+fbsk6dy5c0omkxVX6x133KF//etfchxH586d06VLlxSLxfwua0LvvvuufvSjH5W1T3ND1vvuu09HjhzR8uXL5TiOtm3b5ndJpu3Zs0cXLlzQrl27tGvXLknjH7RW2gdu999/vzZs2KBHHnlEo6Oj2rhxo2bMmOF3WWYtW7ZMGzZs0MMPP6xAIKBt27ZV3DvYn/zkJ3r33Xe1bNkyOY6jzZs3V9wL9lWnTp3S7Nmzy9ondxUEAIPMTZsAAAhvADCJ8AYAgwhvADCI8AYAgwhvADCI8AYAgwhvADDo/wGDFfYlXlZdjAAAAABJRU5ErkJggg\u003d\u003d\n"
          },
          "metadata": {},
          "output_type": "display_data"
        }
      ],
      "source": "data \u003d np.random.normal(size\u003d(20,8)) + np.arange(8) / 2 # 随机生成数据用于测试\ndata1 \u003d np.random.normal(size\u003d(20,8))  # 生成8组, 每组20个的数据矩阵, 20行8列\n\"\"\"print(data1)  # 查看是数据\nprint(data1.shape)  # 20行8列\nprint(data1.ndim) # 二维的数据\nprint(np.arange(8) / 2) # 生成x轴 顺序0-7 / 2\n\"\"\"\nsns.boxplot(data\u003ddata, palette\u003dsns.color_palette(\"hls\", 8))  #画出箱线图\n",
      "metadata": {
        "pycharm": {
          "metadata": false,
          "name": "#%%\n",
          "is_executing": false
        }
      }
    },
    {
      "cell_type": "markdown",
      "source": "### 使用 hls_palette() 函数来控制颜色的亮度以及饱和度\n* n_color 色域数\n* l- lightness 亮度\n* s- saturation 饱和度\n",
      "metadata": {
        "pycharm": {
          "metadata": false,
          "name": "#%% md\n"
        }
      }
    },
    {
      "cell_type": "code",
      "execution_count": 23,
      "outputs": [
        {
          "data": {
            "text/plain": "\u003cFigure size 720x72 with 1 Axes\u003e",
            "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjwAAABECAYAAACF4e8fAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvhp/UCwAAAbxJREFUeJzt20FtxTAQRVGnyIZACYTGxxEaIVACg6tS6zL4XTmWns5B8LyJrmzlmHPOAQAQ7GP3AACA1QQPABBP8AAA8QQPABBP8AAA8d4Gz8/v91M7AACWOf77Lf3uemjK887qcQaf764e1a/dMxb5HF01qnv3kCW6atSrd89Ypq8aZ/XuGcvcXeMOPt/ZNbqu3TMW+RrVPbpq95Alqnv0VbtnLPPuu+lJCwCIJ3gAgHiCBwCIJ3gAgHiCBwCIJ3gAgHiCBwCIJ3gAgHiCBwCIJ3gAgHiCBwCIJ3gAgHiCBwCIJ3gAgHiCBwCIJ3gAgHiCBwCIJ3gAgHiCBwCIJ3gAgHiCBwCIJ3gAgHiCBwCIJ3gAgHiCBwCIJ3gAgHiCBwCIJ3gAgHiCBwCIJ3gAgHiCBwCIJ3gAgHiCBwCIJ3gAgHiCBwCIJ3gAgHiCBwCIJ3gAgHiCBwCIJ3gAgHiCBwCIJ3gAgHiCBwCIJ3gAgHiCBwCIJ3gAgHiCBwCIJ3gAgHiCBwCIJ3gAgHiCBwCIJ3gAgHiCBwCId8w55+4RAAArueEBAOIJHgAgnuABAOIJHgAgnuABAOIJHgAg3h9KaC5vApSwygAAAABJRU5ErkJggg\u003d\u003d\n"
          },
          "metadata": {},
          "output_type": "display_data"
        }
      ],
      "source": "sns.palplot(sns.hls_palette(10, h\u003d0.2, l\u003d0.5, s\u003d0.5))   # 参数总共包括, 颜色的划分个数, 颜色的**, 颜色的亮度, 颜色的饱和度 rgb的值在0-1\n",
      "metadata": {
        "pycharm": {
          "metadata": false,
          "name": "#%%\n",
          "is_executing": false
        }
      }
    },
    {
      "cell_type": "markdown",
      "source": "### 调色板层级出现, 大区域区分明显, 区域中的不同类别区分较弱\n* paired 模板 用于区域性的对比\n",
      "metadata": {
        "pycharm": {
          "metadata": false,
          "name": "#%% md\n"
        }
      }
    },
    {
      "cell_type": "code",
      "execution_count": 28,
      "outputs": [
        {
          "data": {
            "text/plain": "\u003cFigure size 864x72 with 1 Axes\u003e",
            "image/png": "iVBORw0KGgoAAAANSUhEUgAAAqsAAABECAYAAACmlnyPAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvhp/UCwAAAiZJREFUeJzt3KFOXUEYhdH/Et6iNKlFIJqAJfVN68GgwGCwOFCIGgymV7WieAi+xUKCQGBJgLcAhhcAqobZIWs9wTZn8mVyMpPWWisAAAg0M3oAAAC8RKwCABBLrAIAEEusAgAQS6wCABDr1Vh9ePRQAAAA40z+93TV4cXtW215cyuf5+rT9snoGd1c732t4+sfo2d0sfvvd52vXdbir4XRU7o4X7us++nP0TO6mV3fqNsPH0fP6Gbu7qYe/26NntHNzJf9qp3J6Bn97LQ6O74avaKLpW/ztbk8HT2jm4PT9ap6v2dn1UYdrc6PHtHN9z/Pf3d+AwAAIJZYBQAgllgFACCWWAUAIJZYBQAgllgFACCWWAUAIJZYBQAgllgFACCWWAUAIJZYBQAgllgFACCWWAUAIJZYBQAgllgFACCWWAUAIJZYBQAgllgFACCWWAUAIJZYBQAgllgFACCWWAUAIJZYBQAgllgFACCWWAUAIJZYBQAgllgFACCWWAUAIJZYBQAgllgFACCWWAUAIJZYBQAgllgFACCWWAUAIJZYBQAgllgFACCWWAUAIJZYBQAgllgFACCWWAUAIJZYBQAgllgFACCWWAUAIJZYBQAgllgFACCWWAUAIJZYBQAgllgFACCWWAUAIJZYBQAgllgFACCWWAUAIJZYBQAg1qS11kaPAACA57hZBQAgllgFACCWWAUAIJZYBQAgllgFACCWWAUAINYTLCgzdGNaxygAAAAASUVORK5CYII\u003d\n"
          },
          "metadata": {},
          "output_type": "display_data"
        }
      ],
      "source": "sns.palplot(sns.color_palette(\"Paired\", 12))\n",
      "metadata": {
        "pycharm": {
          "metadata": false,
          "name": "#%%\n",
          "is_executing": false
        }
      }
    },
    {
      "cell_type": "markdown",
      "source": "### xkcd 颜色空间 根据颜色名称使用颜色\n* 对颜色以及线宽进行自定义\n* 使用xkcd的颜色命名空间 来设置颜色\n* 使用xdc_rgb 查看颜色的命名\n* xkcd 中包含了对RGB颜色的命名",
      "metadata": {
        "pycharm": {
          "metadata": false,
          "name": "#%% md\n"
        }
      }
    },
    {
      "cell_type": "code",
      "execution_count": 27,
      "outputs": [
        {
          "data": {
            "text/plain": "\u003cFigure size 432x432 with 1 Axes\u003e",
            "image/png": "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\u003d\n"
          },
          "metadata": {},
          "output_type": "display_data"
        },
        {
          "data": {
            "text/plain": "\u003cFigure size 216x72 with 1 Axes\u003e",
            "image/png": "iVBORw0KGgoAAAANSUhEUgAAALUAAABECAYAAADHnXQVAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvhp/UCwAAAR1JREFUeJzt2KFNBUEYRtFdHB0hKQCPeB3QARXQAR0g8BSApKOXQMJPAwTMvt3k5hw56hM3k8msMzMLhFwdPQC2JmpyRE2OqMkRNTl/Rv359b3XDtjM+t+X3s3j+05T9vfxdLvM2/XRMy5mvTsvry/PR8+4mPvTw6/nnh/kiJocUZMjanJETY6oyRE1OaImR9TkiJocUZMjanJETY6oyRE1OaImR9TkiJocUZMjanJETY6oyRE1OaImR9TkiJocUZMjanJETY6oyRE1OaImR9TkiJocUZMjanJETY6oyRE1OaImR9TkiJocUZMjanJETY6oyRE1OaImR9TkiJocUZMjanJETc46M3P0CNiSm5ocUZMjanJETY6oyRE1OT9O8BhtgXquqwAAAABJRU5ErkJggg\u003d\u003d\n"
          },
          "metadata": {},
          "output_type": "display_data"
        }
      ],
      "source": "plt.plot([0,1], [0,1], sns.xkcd_rgb[\"pale red\"], lw\u003d 3)\nplt.plot([0,1], [0,2], sns.xkcd_rgb[\"medium green\"], lw\u003d 3)\nplt.plot([0,1], [0,3], sns.xkcd_rgb[\"denim blue\"], lw\u003d 3)\n\n# xkcd 颜色示意\ncolors \u003d [\"windows blue\", \"amber\", \"greyish\"]\nsns.palplot(sns.xkcd_palette(colors))\n",
      "metadata": {
        "pycharm": {
          "metadata": false,
          "name": "#%%\n",
          "is_executing": false
        }
      }
    },
    {
      "cell_type": "markdown",
      "source": "### 连续画板 调色板 颜色随数据渐变\n* 描述数据的变化指标\n* sns.color_palette(\"颜色\")  顺向颜色渐变\n* sns.color_palette(\"颜色_r\") 逆向颜色渐变\n",
      "metadata": {
        "pycharm": {
          "metadata": false,
          "name": "#%% md\n"
        }
      }
    },
    {
      "cell_type": "code",
      "execution_count": 30,
      "outputs": [
        {
          "data": {
            "text/plain": "\u003cFigure size 432x72 with 1 Axes\u003e",
            "image/png": "iVBORw0KGgoAAAANSUhEUgAAAV0AAABECAYAAAAiJuZQAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvhp/UCwAAAXtJREFUeJzt2jEuRUEAhtH7lKIVK1CI0hpYgajFNtQKmxC1vBVQWIAoRSGiFo1ClK4VoHG/W7xz2mn+6stkMotxHMcBgMTa3AMAVonoAoREFyAkugAh0QUI/RrdLx8bAP7V4q8vY0+vn9WW3PbW+nDz+Db3jMns72wO57fPc8+YxN3L+7A82RsOL+7nnjKJ5cnesHt6PfeMyTycHQwbR5dzz5jMx9Xxj2eeFwBCogsQEl2AkOgChEQXICS6ACHRBQiJLkBIdAFCogsQEl2AkOgChEQXICS6ACHRBQiJLkBIdAFCogsQEl2AkOgChEQXICS6ACHRBQiJLkBIdAFCogsQEl2AkOgChEQXICS6ACHRBQiJLkBIdAFCogsQEl2AkOgChEQXICS6ACHRBQiJLkBIdAFCogsQEl2AkOgChEQXICS6ACHRBQiJLkBIdAFCogsQEl2AkOgChEQXILQYx3GcewTAqnDTBQiJLkBIdAFCogsQEl2AkOgChL4BZGskdsjjjE8AAAAASUVORK5CYII\u003d\n"
          },
          "metadata": {},
          "output_type": "display_data"
        },
        {
          "data": {
            "text/plain": "\u003cFigure size 432x72 with 1 Axes\u003e",
            "image/png": "iVBORw0KGgoAAAANSUhEUgAAAV0AAABECAYAAAAiJuZQAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvhp/UCwAAAX5JREFUeJzt2jEuRUEAhtH7lKLQiFpEIWoLULACUduFQq2wCVFbAoUVKEUhFiBaEZHItQJU97vFO6ed5q++TCazGMdxHABIrMw9AGCZiC5ASHQBQqILEBJdgNCf0f38+q52ACyFxX9fxtZOrqMpvfeb02Hv/HbuGZN5vDgajq8e5p4xif2t9eHsYHu4vH+Ze8okzg62h7unt7lnTOZwd2N4fv2Ye8ZkdjZXfz3zvAAQEl2AkOgChEQXICS6ACHRBQiJLkBIdAFCogsQEl2AkOgChEQXICS6ACHRBQiJLkBIdAFCogsQEl2AkOgChEQXICS6ACHRBQiJLkBIdAFCogsQEl2AkOgChEQXICS6ACHRBQiJLkBIdAFCogsQEl2AkOgChEQXICS6ACHRBQiJLkBIdAFCogsQEl2AkOgChEQXICS6ACHRBQiJLkBIdAFCogsQEl2AkOgChEQXICS6AKHFOI7j3CMAloWbLkBIdAFCogsQEl2AkOgChEQXIPQDiRchaeS5BlAAAAAASUVORK5CYII\u003d\n"
          },
          "metadata": {},
          "output_type": "display_data"
        }
      ],
      "source": "sns.palplot(sns.color_palette(\"Blues\")) # 颜色渐变\nsns.palplot(sns.color_palette(\"Blues_r\")) # 颜色渐变\n",
      "metadata": {
        "pycharm": {
          "metadata": false,
          "name": "#%%\n",
          "is_executing": false
        }
      }
    },
    {
      "cell_type": "markdown",
      "source": "### 色调的线性变换调色板 cubehelix_palette() 调色板\n* 色调线性变换",
      "metadata": {
        "pycharm": {
          "metadata": false,
          "name": "#%% md\n"
        }
      }
    },
    {
      "cell_type": "code",
      "execution_count": 31,
      "outputs": [
        {
          "data": {
            "text/plain": "\u003cFigure size 576x72 with 1 Axes\u003e",
            "image/png": "iVBORw0KGgoAAAANSUhEUgAAAcwAAABECAYAAAAMTwWHAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvhp/UCwAAAbFJREFUeJzt2zFKXUEAhtH70gspQiC4BZsgaQQtbbOV16QxddKkeVuxtVSwEbFxCyEgFoKVaa4bCOZr7huFc8qp/u5jBmY1z/M8AQAvejd6AAC8BYIJAIFgAkAgmAAQCCYABC8G8+np77Z2AMCrtvrft5LdT1+2tWXrfv+5mj4efx09YzF3Z6fT3vpg9IzF3G4up2/f90fPWMSvH9fT+cl69IzFHP3cTLeby9EzFrO3Ppguzh9Hz1jM4dHOdHP/MHrGYj5/eP/Pc0+yABAIJgAEggkAgWACQCCYABAIJgAEggkAgWACQCCYABAIJgAEggkAgWACQCCYABAIJgAEggkAgWACQCCYABAIJgAEggkAgWACQCCYABAIJgAEggkAgWACQCCYABAIJgAEggkAgWACQCCYABAIJgAEggkAgWACQCCYABAIJgAEggkAgWACQCCYABAIJgAEggkAgWACQCCYABAIJgAEggkAgWACQCCYABAIJgAEggkAgWACQCCYABAIJgAEggkAgWACQCCYABCs5nmeR48AgNfODRMAAsEEgEAwASAQTAAIBBMAAsEEgOAZHOsnZt6ynhAAAAAASUVORK5CYII\u003d\n"
          },
          "metadata": {},
          "output_type": "display_data"
        }
      ],
      "source": "sns.palplot(sns.color_palette(\"cubehelix\", 8))\n",
      "metadata": {
        "pycharm": {
          "metadata": false,
          "name": "#%%\n",
          "is_executing": false
        }
      }
    },
    {
      "cell_type": "markdown",
      "source": "### 指定颜色的连续线性调色板 light_palette(\"颜色\", 色块个数)\n* light_palette \n* dark_palette\n* 默认由深到浅的顺序\n* reverse \u003dTrue 反转线性颜色的顺序\n",
      "metadata": {
        "pycharm": {
          "metadata": false,
          "name": "#%% md\n"
        }
      }
    },
    {
      "cell_type": "code",
      "execution_count": 38,
      "outputs": [
        {
          "data": {
            "text/plain": "\u003cFigure size 576x72 with 1 Axes\u003e",
            "image/png": "iVBORw0KGgoAAAANSUhEUgAAAcwAAABECAYAAAAMTwWHAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvhp/UCwAAAahJREFUeJzt2qFNw0EYxuHvT5gAWVfBDCSVdcxAXT0TNCEknQBfV2bAVTZhBkRdJSscC5DmNdeD5Hnsmdf9cpebWmutAICLbkYPAID/QDABICCYABAQTAAICCYABC4Gs5UPtABQVXV76XCqqc51vtaWq5vVrI7fx9EzulncLWr/tR89o5vV/aq2n9vRM7rYPGxq/bEePaOb3eOulu/L0TO6OTwdav42Hz2jm9PzqabXafSMbtrL75dFT7IAEBBMAAgIJgAEBBMAAoIJAAHBBICAYAJAQDABICCYABAQTAAICCYABAQTAAKCCQABwQSAgGACQEAwASAgmAAQEEwACAgmAAQEEwACggkAAcEEgIBgAkBAMAEgIJgAEBBMAAgIJgAEBBMAAoIJAAHBBICAYAJAQDABICCYABAQTAAICCYABAQTAAKCCQABwQSAgGACQEAwASAgmAAQEEwACAgmAAQEEwACggkAAcEEgIBgAkBAMAEgIJgAEBBMAAgIJgAEBBMAAoIJAIGptdZGjwCAv84NEwACggkAAcEEgIBgAkBAMAEgIJgAEPgBVr8hgRs7dRUAAAAASUVORK5CYII\u003d\n"
          },
          "metadata": {},
          "output_type": "display_data"
        },
        {
          "data": {
            "text/plain": "\u003cFigure size 576x72 with 1 Axes\u003e",
            "image/png": "iVBORw0KGgoAAAANSUhEUgAAAcwAAABECAYAAAAMTwWHAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvhp/UCwAAAa5JREFUeJzt26FNpEEAhuF/LzmDwZzBnNkGaIAKaIAKaIACCAXQABXQABXQAA2sOXMGgyHZIIYGCLzm34HkeeSoz72ZSWYzxhgLAPCpX7MHAMBPIJgAEAgmAASCCQCBYAJA8Gkw9/v9oXYAwLe2+epbyXa7PdSWg9vtdsvp39PZM1bz9O9pOTs5mz1jNY//H5fzP+ezZ6zi4flhuTi+mD1jNfcv98vl0eXsGau5e71brn5fzZ6xmtu32+VmczN7xmqux/WH555kASAQTAAIBBMAAsEEgEAwASAQTAAIBBMAAsEEgEAwASAQTAAIBBMAAsEEgEAwASAQTAAIBBMAAsEEgEAwASAQTAAIBBMAAsEEgEAwASAQTAAIBBMAAsEEgEAwASAQTAAIBBMAAsEEgEAwASAQTAAIBBMAAsEEgEAwASAQTAAIBBMAAsEEgEAwASAQTAAIBBMAAsEEgEAwASAQTAAIBBMAAsEEgEAwASAQTAAIBBMAAsEEgEAwASAQTAAIBBMAAsEEgEAwASDYjDHG7BEA8N25YQJAIJgAEAgmAASCCQCBYAJAIJgAELwD5vQnZWq2r1sAAAAASUVORK5CYII\u003d\n"
          },
          "metadata": {},
          "output_type": "display_data"
        },
        {
          "data": {
            "text/plain": "\u003cFigure size 576x72 with 1 Axes\u003e",
            "image/png": "iVBORw0KGgoAAAANSUhEUgAAAcwAAABECAYAAAAMTwWHAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvhp/UCwAAAa9JREFUeJzt27FNXEEARdG/SCQkTkicONkGaIAKaIAKaIACEAXQABXQABXQAA1sQuKEhMSyxEpDAxa+yd8B6ZxwopddzUizGWOMBQD41NHsAQDwHQgmAASCCQCBYAJAIJgAEHwazP3f/aF2AMCXtvnft5Lbze2hthzczbhZro+vZ89Yzd373XJ1cjV7xmru/9wvlz8uZ89YxcPbw3JxejF7xmoeXx+X85/ns2es5un303L262z2jNU8vzwv2+129ozV7Ha7f557kgWAQDABIBBMAAgEEwACwQSAQDABIBBMAAgEEwACwQSAQDABIBBMAAgEEwACwQSAQDABIBBMAAgEEwACwQSAQDABIBBMAAgEEwACwQSAQDABIBBMAAgEEwACwQSAQDABIBBMAAgEEwACwQSAQDABIBBMAAgEEwACwQSAQDABIBBMAAgEEwACwQSAQDABIBBMAAgEEwACwQSAQDABIBBMAAgEEwACwQSAQDABIBBMAAgEEwACwQSAQDABIBBMAAgEEwACwQSAYDPGGLNHAMBX54YJAIFgAkAgmAAQCCYABIIJAIFgAkDwAZvnJ2qhNgRuAAAAAElFTkSuQmCC\n"
          },
          "metadata": {},
          "output_type": "display_data"
        }
      ],
      "source": "sns.palplot(sns.light_palette(\"green\", 8))\nsns.palplot(sns.dark_palette(\"purple\", 8))\nsns.palplot(sns.dark_palette(\"purple\", 8, reverse\u003dTrue)) # 反转渐变的顺序\n",
      "metadata": {
        "pycharm": {
          "metadata": false,
          "name": "#%%\n",
          "is_executing": false
        }
      }
    },
    {
      "cell_type": "markdown",
      "source": "### 颜色绘图示例\n",
      "metadata": {
        "pycharm": {
          "metadata": false,
          "name": "#%% md\n"
        }
      }
    },
    {
      "cell_type": "code",
      "execution_count": 45,
      "outputs": [
        {
          "data": {
            "text/plain": "\u003cmatplotlib.axes._subplots.AxesSubplot at 0x162ff79e320\u003e"
          },
          "metadata": {},
          "output_type": "execute_result",
          "execution_count": 45
        },
        {
          "data": {
            "text/plain": "\u003cFigure size 432x432 with 1 Axes\u003e",
            "image/png": "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84r3at/85jfl9ddfl9tuu01rTQCAElwqCAAG1Z68AQDxMXkDgEHEGwAMIt6rLCwsyL59+2T37t3y/e9/X/71r3+lXtJAH3/8sfzoRz+S733ve7Jz507585//nHpJlZw/f14mJiZSL2Og69evy5EjR2Tnzp2yZ88e+eijj1IvqZJ3331X9uzZk3oZpa5duyaTk5Oye/duefTRR+V3v/td6iWV6na7cujQIdm1a5c89thj8pe//CXpeoj3Kq+++qrcc889cvr0aXn44Yfl+PHjqZc00MmTJ+X++++Xl19+Waanp+XZZ59NvaRSR48elWPHjsn169dTL2WgCxcuyOLiopw5c0YmJibkueeeS72kUjMzM/LMM8+YuF3FuXPn5M4775TTp0/LzMyM/PznP0+9pFJvvPGGiIi88sorsn//fpmenk66ntI36bTJ3r17pdvtiojI5cuXZe3atYlXNNjevXtXbk/Q7XZNXK65ceNG2bJli5w5cyb1UgZ6++23ZdOmTSIicu+998p7772XeEXl1q1bJy+++KI8/fTTqZdS6qGHHpJt27at/LnT6SRcTTVbtmyRzZs3i0gefWhtvHu9c3Rqako2bNggjz/+uHzwwQdy8uTJRKu71aD1XrlyRSYnJ+Xw4cOJVnerfuvdvn27vPXWW4lWVd38/LyMjY2t/LnT6cjS0pIMD+f7T2bbtm3yt7/9LfUyKrnjjjtE5LO/5/3798uBAwcSr6ia4eFhOXjwoJw/f15eeOGFtIsp0NPFixeLBx98MPUySr3//vvF9u3bi9///vepl1LZn/70p+LAgQOplzHQ1NRU8dprr638edOmTQlXU91f//rXYseOHamXUcnly5eLRx55pJidnU29FGf//Oc/i82bNxeffPJJsjWw573KiRMn5OzZsyIiMjo6mv2vchcvXpQnn3xSjh07Jg888EDq5TTKxo0b5c033xSRz24BcddddyVeUbNcvXpVnnjiCZmcnJRHH3009XIqOXv2rJw4cUJEREZGRmRoaChpI/L9HTCB73znO3Lw4EH57W9/K91uV6amplIvaaBjx47J4uKi/OIXvxARkbGxMXnppZcSr6oZtm7dKn/84x9l165dUhRF9v9bsObXv/61/Pe//5Xjx4+vXBgwMzMjt99+e+KV9fetb31LDh06JI899pgsLS3J4cOHk77OxDssAcAgtk0AwCDiDQAGEW8AMIh4A4BBxBsADCLeAGAQ8QYAg4g3ABj0f2OiOLg7WGxFAAAAAElFTkSuQmCC\n"
          },
          "metadata": {},
          "output_type": "display_data"
        }
      ],
      "source": "x, y \u003d np.random.multivariate_normal([0,0], [[1,-.5], [-.5, 1]], size\u003d300).T\npal \u003d sns.dark_palette(\"purple\", as_cmap\u003dTrue)\nsns.kdeplot(x, y, shade\u003d True, cmap\u003dpal)  \n",
      "metadata": {
        "pycharm": {
          "metadata": false,
          "name": "#%%\n",
          "is_executing": false
        }
      }
    },
    {
      "cell_type": "code",
      "execution_count": 47,
      "outputs": [
        {
          "name": "stdout",
          "text": [
            "Help on function kdeplot in module seaborn.distributions:\n\nkdeplot(data, data2\u003dNone, shade\u003dFalse, vertical\u003dFalse, kernel\u003d\u0027gau\u0027, bw\u003d\u0027scott\u0027, gridsize\u003d100, cut\u003d3, clip\u003dNone, legend\u003dTrue, cumulative\u003dFalse, shade_lowest\u003dTrue, cbar\u003dFalse, cbar_ax\u003dNone, cbar_kws\u003dNone, ax\u003dNone, **kwargs)\n    Fit and plot a univariate or bivariate kernel density estimate.\n    \n    Parameters\n    ----------\n    data : 1d array-like\n        Input data.\n    data2: 1d array-like, optional\n        Second input data. If present, a bivariate KDE will be estimated.\n    shade : bool, optional\n        If True, shade in the area under the KDE curve (or draw with filled\n        contours when data is bivariate).\n    vertical : bool, optional\n        If True, density is on x-axis.\n    kernel : {\u0027gau\u0027 | \u0027cos\u0027 | \u0027biw\u0027 | \u0027epa\u0027 | \u0027tri\u0027 | \u0027triw\u0027 }, optional\n        Code for shape of kernel to fit with. Bivariate KDE can only use\n        gaussian kernel.\n    bw : {\u0027scott\u0027 | \u0027silverman\u0027 | scalar | pair of scalars }, optional\n        Name of reference method to determine kernel size, scalar factor,\n        or scalar for each dimension of the bivariate plot.\n    gridsize : int, optional\n        Number of discrete points in the evaluation grid.\n    cut : scalar, optional\n        Draw the estimate to cut * bw from the extreme data points.\n    clip : pair of scalars, or pair of pair of scalars, optional\n        Lower and upper bounds for datapoints used to fit KDE. Can provide\n        a pair of (low, high) bounds for bivariate plots.\n    legend : bool, optional\n        If True, add a legend or label the axes when possible.\n    cumulative : bool, optional\n        If True, draw the cumulative distribution estimated by the kde.\n    shade_lowest : bool, optional\n        If True, shade the lowest contour of a bivariate KDE plot. Not\n        relevant when drawing a univariate plot or when ``shade\u003dFalse``.\n        Setting this to ``False`` can be useful when you want multiple\n        densities on the same Axes.\n    cbar : bool, optional\n        If True and drawing a bivariate KDE plot, add a colorbar.\n    cbar_ax : matplotlib axes, optional\n        Existing axes to draw the colorbar onto, otherwise space is taken\n        from the main axes.\n    cbar_kws : dict, optional\n        Keyword arguments for ``fig.colorbar()``.\n    ax : matplotlib axes, optional\n        Axes to plot on, otherwise uses current axes.\n    kwargs : key, value pairings\n        Other keyword arguments are passed to ``plt.plot()`` or\n        ``plt.contour{f}`` depending on whether a univariate or bivariate\n        plot is being drawn.\n    \n    Returns\n    -------\n    ax : matplotlib Axes\n        Axes with plot.\n    \n    See Also\n    --------\n    distplot: Flexibly plot a univariate distribution of observations.\n    jointplot: Plot a joint dataset with bivariate and marginal distributions.\n    \n    Examples\n    --------\n    \n    Plot a basic univariate density:\n    \n    .. plot::\n        :context: close-figs\n    \n        \u003e\u003e\u003e import numpy as np; np.random.seed(10)\n        \u003e\u003e\u003e import seaborn as sns; sns.set(color_codes\u003dTrue)\n        \u003e\u003e\u003e mean, cov \u003d [0, 2], [(1, .5), (.5, 1)]\n        \u003e\u003e\u003e x, y \u003d np.random.multivariate_normal(mean, cov, size\u003d50).T\n        \u003e\u003e\u003e ax \u003d sns.kdeplot(x)\n    \n    Shade under the density curve and use a different color:\n    \n    .. plot::\n        :context: close-figs\n    \n        \u003e\u003e\u003e ax \u003d sns.kdeplot(x, shade\u003dTrue, color\u003d\"r\")\n    \n    Plot a bivariate density:\n    \n    .. plot::\n        :context: close-figs\n    \n        \u003e\u003e\u003e ax \u003d sns.kdeplot(x, y)\n    \n    Use filled contours:\n    \n    .. plot::\n        :context: close-figs\n    \n        \u003e\u003e\u003e ax \u003d sns.kdeplot(x, y, shade\u003dTrue)\n    \n    Use more contour levels and a different color palette:\n    \n    .. plot::\n        :context: close-figs\n    \n        \u003e\u003e\u003e ax \u003d sns.kdeplot(x, y, n_levels\u003d30, cmap\u003d\"Purples_d\")\n    \n    Use a narrower bandwith:\n    \n    .. plot::\n        :context: close-figs\n    \n        \u003e\u003e\u003e ax \u003d sns.kdeplot(x, bw\u003d.15)\n    \n    Plot the density on the vertical axis:\n    \n    .. plot::\n        :context: close-figs\n    \n        \u003e\u003e\u003e ax \u003d sns.kdeplot(y, vertical\u003dTrue)\n    \n    Limit the density curve within the range of the data:\n    \n    .. plot::\n        :context: close-figs\n    \n        \u003e\u003e\u003e ax \u003d sns.kdeplot(x, cut\u003d0)\n    \n    Add a colorbar for the contours:\n    \n    .. plot::\n        :context: close-figs\n    \n        \u003e\u003e\u003e ax \u003d sns.kdeplot(x, y, cbar\u003dTrue)\n    \n    Plot two shaded bivariate densities:\n    \n    .. plot::\n        :context: close-figs\n    \n        \u003e\u003e\u003e iris \u003d sns.load_dataset(\"iris\")\n        \u003e\u003e\u003e setosa \u003d iris.loc[iris.species \u003d\u003d \"setosa\"]\n        \u003e\u003e\u003e virginica \u003d iris.loc[iris.species \u003d\u003d \"virginica\"]\n        \u003e\u003e\u003e ax \u003d sns.kdeplot(setosa.sepal_width, setosa.sepal_length,\n        ...                  cmap\u003d\"Reds\", shade\u003dTrue, shade_lowest\u003dFalse)\n        \u003e\u003e\u003e ax \u003d sns.kdeplot(virginica.sepal_width, virginica.sepal_length,\n        ...                  cmap\u003d\"Blues\", shade\u003dTrue, shade_lowest\u003dFalse)\n\n"
          ],
          "output_type": "stream"
        }
      ],
      "source": "help(sns.kdeplot)\n\n",
      "metadata": {
        "pycharm": {
          "metadata": false,
          "name": "#%%\n",
          "is_executing": false
        }
      }
    }
  ],
  "metadata": {
    "language_info": {
      "codemirror_mode": {
        "name": "ipython",
        "version": 2
      },
      "file_extension": ".py",
      "mimetype": "text/x-python",
      "name": "python",
      "nbconvert_exporter": "python",
      "pygments_lexer": "ipython2",
      "version": "2.7.6"
    },
    "kernelspec": {
      "name": "python3",
      "language": "python",
      "display_name": "Python 3"
    }
  },
  "nbformat": 4,
  "nbformat_minor": 0
}